{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "c645b948-068a-4cd6-9a59-6dc643c255f7",
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn as nn\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "cf26e3d9-eed9-404e-a611-db98901064c8",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 设置随机种子以确保结果可重现\n",
    "torch.manual_seed(42)\n",
    "\n",
    "# 生成示例数据\n",
    "X = 2 * torch.rand(100, 1)\n",
    "y = 4 + 3 * X + torch.randn(100, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "42903c46-d2d2-4983-9c02-5d332d38e02b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义线性回归模型\n",
    "class LinearRegressionModel(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(LinearRegressionModel, self).__init__()\n",
    "        self.linear = nn.Linear(1, 1)  # 输入特征数为1，输出为1\n",
    "    \n",
    "    def forward(self, x):\n",
    "        return self.linear(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "b58c1556-2651-4658-8875-276580399d21",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 初始化模型\n",
    "model = LinearRegressionModel()\n",
    "\n",
    "# 定义损失函数和优化器\n",
    "criterion = nn.MSELoss()  # 均方误差损失\n",
    "optimizer = torch.optim.SGD(model.parameters(), lr=0.01)  # 随机梯度下降"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "7d1d9147-3425-47a0-87eb-40a0fa7bc442",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch [100/1000], Loss: 0.9395\n",
      "Epoch [200/1000], Loss: 0.8102\n",
      "Epoch [300/1000], Loss: 0.7430\n",
      "Epoch [400/1000], Loss: 0.7066\n",
      "Epoch [500/1000], Loss: 0.6867\n",
      "Epoch [600/1000], Loss: 0.6760\n",
      "Epoch [700/1000], Loss: 0.6701\n",
      "Epoch [800/1000], Loss: 0.6670\n",
      "Epoch [900/1000], Loss: 0.6652\n",
      "Epoch [1000/1000], Loss: 0.6643\n"
     ]
    }
   ],
   "source": [
    "# 训练模型\n",
    "num_epochs = 1000\n",
    "cost_history = []\n",
    "\n",
    "for epoch in range(num_epochs):\n",
    "    # 前向传播\n",
    "    predictions = model(X)\n",
    "    cost = criterion(predictions, y)\n",
    "    \n",
    "    # 反向传播和优化\n",
    "    optimizer.zero_grad()  # 清零梯度\n",
    "    cost.backward()        # 反向传播计算梯度\n",
    "    optimizer.step()       # 更新参数\n",
    "    \n",
    "    # 记录损失\n",
    "    cost_history.append(cost.item())\n",
    "    \n",
    "    # 每100次迭代打印一次损失\n",
    "    if (epoch+1) % 100 == 0:\n",
    "        print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {cost.item():.4f}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "ca6eeea5-2b92-445d-944b-438ae95b210c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "最终参数:\n",
      "linear.weight: tensor([[2.8233]])\n",
      "linear.bias: tensor([4.1649])\n"
     ]
    },
    {
     "data": {
      "image/png": "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wzpNFRcXKzMz06KqYLVbbrlFr7/+ut5//321atUquDwzM1MVFRUqKSkJ2z70esnMzKz1egqsQ9OyatUq7dixQ+ecc45cLpdcLpcWL16sp556Si6XSxkZGVwzCNOiRQt17tw5bFmnTp20ZcsWSQd/50f7eykzM1M7duwIW19VVaVdu3ZxzTRBv/vd7/SHP/xBV199tc466yxde+21uu2221RQUCCJawZHV1/Xh53+riIkRYDb7VZOTo4WLVoUXOb3+7Vo0SLl5uZaWBmsYIzRLbfcovnz5+u99947bFg5JydH0dHRYdfLxo0btWXLluD1kpubq08//TTsfzYLFy5UUlLSYf8wQuM3cOBAffrpp1q7dm3w1aNHD40cOTL4M9cMQp1//vmHPVrgyy+/VJs2bSRJ7dq1U2ZmZtg1U1ZWpuXLl4ddMyUlJVq1alVwm/fee09+v1+9evWKwFkgkvbt2yenM/yfhVFRUfL7/ZK4ZnB09XV95ObmasmSJaqsrAxus3DhQp155pkRnWoniRbgkTJ37lzj8XjMc889Zz777DMzZswYk5ycHNZpCqeGm266yXi9XvPBBx+Y7du3B1/79u0LbjN27FjTunVr895775mVK1ea3Nxck5ubG1wfaOd88cUXm7Vr15q33nrLNG/enHbOp5DQ7nbGcM0g3Mcff2xcLpd58MEHzaZNm8zs2bNNXFyceeGFF4LbTJkyxSQnJ5tXXnnFfPLJJ+byyy+vtV3v2WefbZYvX24+/PBD07FjR9o5N1GjRo0yp512WrAF+L///W+TlpZmfv/73we34Zo5te3evdusWbPGrFmzxkgyjz/+uFmzZo357rvvjDH1c32UlJSYjIwMc+2115r169ebuXPnmri4OFqAN3V/+ctfTOvWrY3b7TY9e/Y0y5Yts7okWEBSra9Zs2YFt9m/f7+5+eabTUpKiomLizPDhw8327dvDzvOt99+a4YMGWJiY2NNWlqa+e1vf2sqKysjfDawyqEhiWsGh3rttddM165djcfjMdnZ2eZvf/tb2Hq/32/uvvtuk5GRYTwejxk4cKDZuHFj2DY//vijueaaa0xCQoJJSkoyo0ePNrt3747kaSBCysrKzK233mpat25tYmJizOmnn27uuuuusFbMXDOntvfff7/Wf7+MGjXKGFN/18e6detMnz59jMfjMaeddpqZMmVKpE4xjMOYkEcpAwAAAMApjnuSAAAAACAEIQkAAAAAQhCSAAAAACAEIQkAAAAAQhCSAAAAACAEIQkAAAAAQhCSAAAAACAEIQkAAAAAQhCSAAAI4XA4tGDBAqvLAABYiJAEALCN66+/Xg6H47DXJZdcYnVpAIBTiMvqAgAACHXJJZdo1qxZYcs8Ho9F1QAATkWMJAEAbMXj8SgzMzPslZKSIqlmKtz06dM1ZMgQxcbG6vTTT9fLL78ctv+nn36qAQMGKDY2Vs2aNdOYMWO0Z8+esG1mzpypLl26yOPxqEWLFrrlllvC1u/cuVPDhw9XXFycOnbsqFdffTW47qefftLIkSPVvHlzxcbGqmPHjoeFOgBA40ZIAgA0Knfffbfy8vK0bt06jRw5UldffbU+//xzSdLevXs1ePBgpaSkaMWKFZo3b57efffdsBA0ffp05efna8yYMfr000/16quvqkOHDmGfce+99+rKK6/UJ598op/97GcaOXKkdu3aFfz8zz77TG+++aY+//xzTZ8+XWlpaZH7AgAADc5hjDFWFwEAgFRzT9ILL7ygmJiYsOV33nmn7rzzTjkcDo0dO1bTp08Pruvdu7fOOeccTZs2TX//+991xx13qLCwUPHx8ZKkN954Q5deeqm2bdumjIwMnXbaaRo9erQeeOCBWmtwOBz64x//qPvvv19STfBKSEjQm2++qUsuuUSXXXaZ0tLSNHPmzAb6FgAAVuOeJACArVx44YVhIUiSUlNTgz/n5uaGrcvNzdXatWslSZ9//rm6d+8eDEiSdP7558vv92vjxo1yOBzatm2bBg4ceNQaunXrFvw5Pj5eSUlJ2rFjhyTppptuUl5enlavXq2LL75Yw4YN03nnnVencwUA2BMhCQBgK/Hx8YdNf6svsbGxx7VddHR02HuHwyG/3y9JGjJkiL777ju98cYbWrhwoQYOHKj8/Hz96U9/qvd6AQDW4J4kAECjsmzZssPed+rUSZLUqVMnrVu3Tnv37g2u/+ijj+R0OnXmmWcqMTFRbdu21aJFi06qhubNm2vUqFF64YUX9OSTT+pvf/vbSR0PAGAvjCQBAGzF5/OpqKgobJnL5Qo2R5g3b5569OihPn36aPbs2fr44481Y8YMSdLIkSN1zz33aNSoUZo8ebJ++OEHjRs3Ttdee60yMjIkSZMnT9bYsWOVnp6uIUOGaPfu3froo480bty446pv0qRJysnJUZcuXeTz+fT6668HQxoAoGkgJAEAbOWtt95SixYtwpadeeaZ+uKLLyTVdJ6bO3eubr75ZrVo0UIvvviiOnfuLEmKi4vT22+/rVtvvVXnnnuu4uLilJeXp8cffzx4rFGjRqm8vFxPPPGEbr/9dqWlpemKK6447vrcbrcmTpyob7/9VrGxsbrgggs0d+7cejhzAIBd0N0OANBoOBwOzZ8/X8OGDbO6FABAE8Y9SQAAAAAQgpAEAAAAACG4JwkA0GgwQxwAEAmMJAEAAABACEISAAAAAIQgJAEAAABACEISAAAAAIQgJAEAAABACEISAAAAAIQgJAEAAABACEISAAAAAIT4/wES2Psyci3r2wAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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HnkEW7duRY8ePaDX6/Hrr7/i008/Na21IvcaAcDf//53jBw5EiEhIRgyZIjNnr1BgwahVq1ayMnJMXvvy3X//ffj6aefxurVqzF58mRZC2V27NgRY8eOxbvvvmsa3t+zZw+WLVuGYcOGoU+fPg6fQ8r1luubb75B7dq1kZ6eLvuxiuXtaVX0F+O0bVv/Tpw4YXPadmRkpMXzWZtqK4QQ7777rujSpYuIiIgQUVFRon379uLpp58Wp0+fNpXZtWuXuPXWW0VERISIi4sTTz/9tGnKonG6qhBV07YdTWO2Vqc///zT4pxOpxNardZs+uP+/fvF3XffLRo0aCDCwsJEQkKCGDFihPj222/NHvvtt9+Km266SYSGhoqkpCTx/vvviyeffFKEh4eblQNgc0r12bNnxdSpU0V8fLwICQkRMTExom/fvuLdd981lVm8eLG47bbbTPVJSkoSM2bMME2FraysFDNmzBAdO3YUUVFRIjIyUnTs2FH861//MnutmtO2hRCirKxMPP744yIuLk6EhISIVq1aifnz55tNBbbXhoSEBMnTfG+55RYBQOzevdt07OTJkwKAiI+Ptyhv7b3066+/ittuu01ERESYTW22dY+N72+pU2y3bdsmhg8fLmJjY0VISIiIjo4WN998s8jMzBRFRUVmZRMSEsSgQYOsPs+XX34pOnToIMLDw0Xz5s1Fdna2+PDDDy3qotfrRVZWloiNjRURERHi9ttvF/n5+RbXtea0bSMp71U518bW9bXG+HfB+K9WrVqifv36olu3bmLWrFni+PHjVh9XVlYmZs2aJVq2bClCQ0NFw4YNRffu3cWrr74qrl69KoQQ4vPPPxf9+vUTjRs3FqGhoeKGG24QkyZNsrgHxcXF4tFHHxVNmzYVoaGholmzZmLs2LFmSyFcvXpVZGdni5SUFBEWFibq1asnunTpIrKysky/Q0LIe4/PmTNHNG3aVAQFBUl6f915552ib9++ZseM9/Szzz6z+9jqBg4cKACI77//3m45a1PLr127JrKyskRiYqIICQkR8fHxYtasWWZLYghh/33t6HrbapO1zxAhhOjWrZsYM2aMxNarg0YID34NJ/KiYcOG4ZdffjHNQiEi2rFjB26//Xb8+uuvLiXA3nXXXTh48KDkXD0lO3DgADp37oy8vDybie1qxBwaUqUrV66Y/XzkyBGsX78et99+u28qRESK1KtXL/Tr189iGwg5ioqK8PXXX+OBBx5wY818Z968eRg+fLhfBTMAwB4aUqXY2FjTrszHjx/HokWLUFlZif379/vVNEQi8p3CwkLs2rUL77//Pvbu3YuCggLExMT4ulpkA5OCSZUyMjKwcuVKnDlzBmFhYUhNTcXLL7/MYIaI3Gb79u0YP348brjhBixbtozBjMKxh4aIiIhUjzk0REREpHoMaIiIiEj1/D6HxmAw4PTp04iKivKrTbiIiIj8mRACZWVliIuLQ1CQ4/4Xvw9oTp8+bbEJGhEREanDiRMn0KxZM4fl/D6gMW78d+LECdOus0RERKRspaWliI+PN9vA1x6/D2iMw0zR0dEMaIiIiFRGaroIk4KJiIhI9RjQEBERkeoxoCEiIiLVY0BDREREqseAhoiIiFSPAQ0RERGpHgMaIiIiUj0GNERERKR6DGiIiIhI9fx+pWAiIiKypDcI7Cm8gHNlFWgcFY6uifURHKTeTZwZ0BAREQWYjflFyFp3CEW6CtOxWG04MockI6NdrA9r5jwOOREREQWQjflFmLwizyyYAYAiXQUeWZGH9T+f9lHNXMOAhoiIKEDoDQJZ6w5B2Cnz6Mr9WP9zkdfq5C4MaIiIiALEnsILFj0zNRkEMOXjPGzMV1dQw4CGiIgoQJwrsx/MVJe17hD0Bnt9OcrCgIaIiChANI4Kl1y2SFeBPYUXPFgb92JAQ0REFCC6JtZHrFZ6ULPr6J+q6aVhQENERBQggoM0yBySLLn8W1sL0DN7iyryaRjQEBERBZCMdrH41/03Qeoaemd0FZi8QvlJwgxoiIiIAszADnF4a1RnSWWNA05KTxJmQENERKRieoNAbkEx1h44hdyCYslBx8AOsXhnTGdJOTUCyk8S5tYHRERECuDM3kqubmGQ0S4W6ckxWPDN73hr61GH5eVM+/Y2BjREREQ+5kxgYtzCoGZ/jDHnZdGYzpKCmuAgDXq0bCgpoJEz7dvbOORERETkQ7b2VrKXjGtvCwNncl6M07lt9QdpUBVgdU2sL+n5fMGnAc13332HIUOGIC4uDhqNBmvWrDE7L4TA888/j9jYWERERCAtLQ1HjhzxTWWJiIjczNnAxNEWBnJzXqpP564Z1Bh/zhyS7HAIzJd8GtCUl5ejY8eOePvtt62ef+WVV/DGG2/gnXfewe7duxEZGYn+/fujokK5Y3hERERSORuYSM1lkZPzktEuFovGdEZMjSThGG245OErX/JpDs2AAQMwYMAAq+eEEFi4cCH+8Y9/YOjQoQCAf//732jSpAnWrFmDkSNHerOqREREbudsYCI1l0VuzosxSVhucrISKDYpuLCwEGfOnEFaWprpmFarRbdu3ZCbm2szoKmsrERlZaXp59LSUo/XlYiIyBnOBibGnJczugqrw1UaVPWsWMt5cTSbKjhIg9SkBnKaoQiKDWjOnDkDAGjSpInZ8SZNmpjOWTN37lxkZWV5tG5ERETucLG80mEZa8m4xpyXySvyoAHMghp7OS+uTvNWMr+b5TRr1izodDrTvxMnTvi6SkRERBb0BoE5Xx92WO65QdaTceXmvDgzm0pNFNtDExMTAwA4e/YsYmP/uilnz55Fp06dbD4uLCwMYWFhnq4eERGRSxwlBBvViwy1eU5qzouj2VQaVM2mSk+OUUW+jDWK7aFJTExETEwMvv32W9Ox0tJS7N69G6mpqT6sGRERkevcNVPJmPMytFNTpCY1sBqQuHuatxL5tIfm0qVLOHr0r5UJCwsLceDAAdSvXx833HADpk+fjhdffBGtWrVCYmIinnvuOcTFxWHYsGG+qzQREZEbeGqmkjWemOatND4NaH788Uf06dPH9PMTTzwBABg7diyWLl2Kp59+GuXl5fjb3/6GkpIS9OzZExs3bkR4uHKXXiYiIpLClZlKcnkzePIVjRBCuXuBu0FpaSm0Wi10Oh2io6N9XR0iIiITY6IuYH2mkrsWtNMbBHpmb3EYPO2ceYdicmjkfn4rNoeGiIjI33lrdV5/2NrAEfbQEBER+Zijxe7c9Vg1rUMj9/ObAQ0REZFKOROguBI8eRMDmhoY0BARBRa1fGC7yph/U/ND3N35N74i9/NbsQvrERERyaWmIRVXOFooD1D/QnlyMSmYiIj8gr8v7V+dlFWGPb5Q3s8/AxoN0KIFUFDgudeRiAENERGpntQeC73BP7IszpRKWwDPWE5vEMgtKMbaA6eQW1Ds2nU4exYIDgY6dqz6ubAQOHfO+edzEw45ERGR6slZ2j81qYH3KuYhFy453qXbWM5tw3AVFUD37sD+/ebHX3gBUMCWROyhISIi1QuEpf2rq29nw8rqTl687PownBDAuHFARIR5MHPvvYBeDzz3nIyaew4DGiIiUr1AWNq/uhhthKRya3867dow3GuvAUFBwLJlfx278Ubg0iXg00+rzimEcmpCRETkJOO+SLbm82hQNczijn2RlMDYXnsaRIbiQvk1m+ft7rD9zDNVCb9PPml+/MQJ4LffgMhIJ2rtWQxoiIhI9QJhaf/qjO21F8AN7RQn6bnMhuFmzqwKZLKzzQvt2VM19NSsmVP19QYGNERE5Be8tS+SUhjbW7OnJvZ/7U1PjpH0PI2jwoEVK6oCmVdeMT/5739XBTK33OKuansMZzkREZHfyGgXi/TkGMkrBat9VWF77dUbBGK14XZ32L614ixSWza0/uQq20iAAQ0REfmV4CCNpKnZ/rKqsK32GoelJq/IgwYwC2pC9Ndx5NVh1p+wshIIlTaLSkk45ERERAEnUFYVtjYMdyx7sPVg5ocfqnplVBjMAOyhISKiAONoVWENlLsPkjNDZMZhqeBgG30YI0cCK1d6oLbexYCGiIgCilpXFXZ6iEyjQbCtcyrLk7GHQ05ERBRQ1LiqsFNDZAMHVs1cskYIvwpmAAY0REQUYNS2qrDsjTe3b68KZDZssPIAx4GMWzey9CIOORERUUAxrrJrbzpzjIJWFZY6RLb3tzO4NdnGYnolJYBW6/C11Dzziz00REQUUNS2qrCUoa9j2YOtBzMrV1b1yEgMZtQ884sBDRERBRw1rSpsb+jrWPZgHMsebHkiIaEqkBk5UtJrXL1uwLOrD7q2kaWPcciJiIgCktxVhX3F2hCZ1SDGSGay78b8Ijy7Ol/yRpZKmvlVHQMaIiIKWFJXFfal6iv+ujOQAf4aZpL6SCXN/KqJQ05EREQKYG92UUbuVyi0EcxsPHjaqWDG3uwpW5Qy88sa9tAQERH5mK3ZRVnpieh3S5LVx+zdfRidb26NDCeHyBzNnqpOaTO/rGFAQ0TkQUrdzVmp9QpEtoZ9cp9NA5618oDp04EFC3CLi68rd/hISTO/rGFAQ0TkIUpd00Op9QpE1oZ93J0nY4vU4aP6kSF4+a72in9vMIeGiMgDlLqmh1LrFaiqD/vYnIINIPfoebdvVWCcPWWvz6VBZCh+mJWm+GAGYA8NEZHbKXU3Z6XWy1uUOMx2rqzCbo9M85lfAQBetzI85Gp7qs+e0gBm7wvjs7x0VzuE1lJH3wcDGiIiN1Pqbs5KrZc3KHKYbe5cDH3WWpLMX4GMUc3hIXe1x7jAYM3nivH1tXECAxoiIjdT6m7OSq2Xp9lKujUOs3l9ZeDycqBOHaunUicvQVF0I9PP1mYXubs9allg0BHF9yOVlZVh+vTpSEhIQEREBLp37469e/f6ulpERDYpdTdnpdbLk2TvVO1pGo3VYGZ96x5InPmVRTADmM8u8lR7jAsMDu3UFKlJDVQXzAAqCGgmTpyIb775BsuXL8fBgwfRr18/pKWl4dSpU76uGhGRVY6SLTWoGh7w9poeSq2XJ8kZZvMojabqn9VKCAR9/pmkfaUU0x4FUvSQ05UrV7Bq1SqsXbsWt912GwBg9uzZWLduHRYtWoQXX3zRxzUkIrIkJdnSF2t6KLVenqI3COw6el5SWY8Ns9kKYgCzWUtSh30CddhQCkX30Fy/fh16vR7h4eZRa0REBHbu3OmjWhEROabU3ZyVWi9325hfhJ7ZW/DW1qOSyrt9mM1Bj4y1KdhShn0CcdhQKkX30ERFRSE1NRVz5sxB27Zt0aRJE6xcuRK5ublo2bKl1cdUVlaisrLS9HNpaam3qktEZEapyZZKrZe7yNlw0e1L+mdmAi+8YP2cG9aRsbbzdnVq2KLAUxQd0ADA8uXLMWHCBDRt2hTBwcHo3LkzRo0ahX379lktP3fuXGRlZXm5lkRE1il1N2el1stVcjZcdOsw26VLQFSU9XPHjwM33ODa8/9PoA0byqHoIScASEpKwvbt23Hp0iWcOHECe/bswbVr19CiRQur5WfNmgWdTmf6d+LECS/XmIiIfEXOhotuG2bTaKwHMwMGVPXKuCmYMQqUYUO5FN9DYxQZGYnIyEhcvHgRmzZtwiuvvGK1XFhYGMLCwrxcOyIiUgKpybCP9knC4+mtXevJkJjw6wn+PmzoDMUHNJs2bYIQAq1bt8bRo0cxY8YMtGnTBuPHj/d11YiISGGkJsP2aNnI+Q9/HwYy1fnrsKGzFB/Q6HQ6zJo1CydPnkT9+vVxzz334KWXXkJISIivq0ZERG5ga08iZ/Yq8mjSrEICGbJOI4R/34XS0lJotVrodDpER0f7ujpERFSNrT2J7uwYiy9/KnJqryLjLCfAetKs7DyT6dOB11+3fs6/P0J9Su7nNwMaIiJyibO7PsuZXg3IC0jcsnljWRlg63OjsBBo3lza85BT5H5+K37IiYiIlMvZwEHO9GojgaqgJmvdIaQnx9gNmlxOmrU1vNSlC/DjjzJqTd7CgIaIiJziyq7PcqZXV1d9ryJHCbFOJc0yT0a1FL8ODRERKY+ruz67uteQ2/cqcmKrAlIWBjRERCSbq7s+u7rXkCuP1xsEcguKsfbAKcmBTPXH5BYU2wzUyHc45ERERLK5uuuzo+nVtri6V5Ex52faJ69g1M+brReq0RvjlgRj8jj20BARkWyu7vps3JMI+Gv2kiOu7lW0Mb8IMz7Yidxn06wGM9vX51oNZiavyLPojTLmCW3ML5JdD/IMBjRERCSbsYfFVlihQVUvhr2eFFt7EsVqwzHptkTEunGvIr1BIKN9HA4uHGFx7mj9Zkic+RWeOVBuNpTkap4QeReHnIiISDZ37fpsb3r10xlt3bNXkUaDYBunms/8yvT/NWdPyckT4hYEvseAhoiInGLsYamZXxIjM7/E1vRql/cqsjMFu3ogU131nB9X84TIuxjQEBGR0xS567MTgYxR9ZwfV/OEyLsY0BARkUsUs+vz3XcDq1dbPaXXG9Azews0Mjat9OhGl+R2TAomIiJ10+mqemWsBTO//goIYXdWla2cH2ceQ77DgIaIiNRLowHq1rU8HhZWNQW7dWvTIVuzquzNnnLmMeQb3G2biIjUx4U9l5zZHdzZHcXJedxtm4iI/JcTgYy1YERuzo9i8oTIJgY0RESkfE72yHDbgsDBHBoiIlKugQOd3gWb2xYEFgY0RESkPBcvVgUyGzZYnsvPl5Qnw20LPEtpO5BzyImIiJTFhYRfI25b4FlKHMpjDw0RkYoo7VuxW2k0Tg8v1cRtCzxHqUN57KEhIlIJJX4rdgs39MjU5OltCwJ1GrejoTwNqoby0pNjvH49GNAQEamA8VtxzQ8S47diVS7y5oFAxsiT2xb4bWApgZKH8jjkRESkcH6X4Nqjh9uGlmzx1LYFrg63qH3IUMlDeeyhISJSOFe+FStqaOTCBaCBjW/tBw4AHTu69eWM2xbU7E2JcbI3xdXhFn/o2VHyDuQMaIiIfEhKwOHst2JFfYB6cHjJnox2sUhPjnFLUOdKYOkvQ4ZK3oGcAQ0RkY9IDTic+VasmA9QHwUy1blr2wJnA0tnenYU1bNWjXEob/KKPGgAszb5egdy5tAQEfmAnFwM47diWx8RGlQFQsZvxYrIuXHjFGylcHa4RU7PDlD13uiZvQWj3vsBj31yAKPe+wE9s7coZmVjpe5Azh4aIiIvk/uNXe63Yp/ORFFAj4ynODvcIqdnRzE9aw64cyjPXdhDQ0TkZXK/sQPyvhX7ZCaKF2Yu+ZqzM6ek9uw0jAzzfc+aDMahvKGdmiI1qYHPh8TYQ0NE5GXOBhxSvxV7dSaKvZlLP/0EdOjg+msoiDMzp6T27EADxa7xogYMaIiIvMyVgENKgmuXhHoI0gD2vsgHaarKucSPh5fskTvcInXI8PylSkmvz+0arOOQExGRl8lN8pVr3/GLdoMZoCrY2Xf8olPP748Jv3LJHW6RMmSo5DVe1IA9NEREXubpqa8ey6EJ0B4Zd3HUs6PkNV7UQNE9NHq9Hs899xwSExMRERGBpKQkzJkzB4K/OESkcp6c+ur2b/rskXEbez07ntquIVAouocmOzsbixYtwrJly5CSkoIff/wR48ePh1arxbRp03xdPSIil3hq6qvbvumnpACHDlk/xyDGI9y9XUMg0QgFd3cMHjwYTZo0wQcffGA6ds899yAiIgIrVqyQ9BylpaXQarXQ6XSIjo72VFWJiBTFuJ4JYH1Iy24vUHEx0LCh9XP79gGdO7utnmSdUlcK9ia5n9+KHnLq3r07vv32W/z+++8AgJ9++gk7d+7EgAEDbD6msrISpaWlZv+IiAKN00NaGo3tYEYIBjNeorQ1XtRA0UNOzzzzDEpLS9GmTRsEBwdDr9fjpZdewujRo20+Zu7cucjKyvJiLYmIlEnWkBYTfknlFD3k9Mknn2DGjBmYP38+UlJScODAAUyfPh2vvfYaxo4da/UxlZWVqKz8ay5/aWkp4uPjOeRERGQNAxlSKLlDTooOaOLj4/HMM89g6tSppmMvvvgiVqxYgV9//VXSczCHhojICgYypHB+lUNz+fJlBAWZVzE4OBgGg8FHNSIiUrkA2HOJApOic2iGDBmCl156CTfccANSUlKwf/9+vPbaa5gwYYKvq0ZEpC729lzavx/o1Mmr1SFyN0UPOZWVleG5557D6tWrce7cOcTFxWHUqFF4/vnnERoaKuk5OORERAGPw0ukQn6VQ+MODGiIKGAxkCEVk/v5reghJyIicgIDGQpADGiIiPwFAxkKYIqe5URERBKkpHDmEgU8BjRERGp1/nxVIGNtA8kff2QgQwGFQ05ERGrE4SUiMwxoiIjUhIEMkVUMaIiI1ICBDJFdDGiIiJTMy4GM3iCk7c5do2zDOmGAAM6XVzp8HJEnMKAhIlKiZs2AU6esn/NQj8zG/CJkrTuEIl2F6VisNhyZQ5KR0S7WYdnqbD2OyFO4UjARkYuMPRVndFdwofwq6tcJQ0y0k70U588DjRpZP7d7N9C1q+sVtmJjfhEmr8hDzQ8EY+0XjelsCk5slXX0OCI5uFIwEZEX2eupkN1L4aM8Gb1BIGvdIasBikBVcJK17hDSk2OA//2/o9rUfByHn8jTuA4NEZGTjD0VtoZdinQVmLwiDxvzi+w/kUbj04Xx9hResNkGoCo4KdJVYE/hBYdlbT2OyNMY0BAROcFer0ZNWesOQW+wUtLHgYzRuTJpAcq5sgrJZZ15fin0BoHcgmKsPXAKuQXF1q8rBSQOOREROUFqT0X1XorUpAZVBxU2BbtxVLhby7nrcTXJSVqmwMMeGiIiJ8jtdThXVgEkJbm1R8ZdvRVdE+sjVhsOW2GWBlWBQ9fE+g7L2nqcq2wN752ROqxHfo89NEREElVfd+V8WaXkx9W9UoqhNzWzfjI3F7j1Vtl1cWdvRXCQBplDkjF5RR40gNkwmjFwyRySbErstVUWDh7nLDlJy0w+Dlyctk0UQOQsmkbmrAUQQRrAUafIsezBtk86+edXzhRruc+rxHVocguKMeq9HxyWW/nwrX8N65Hqcdo2EVnF/APn2Qog7AUznghkAM/2VmS0i0V6coykoLdmWU+uFCwnaZkCFwMaogBg6wPZmH/Axc9skzKbqXpPjacCGSM5U6yd6a0IDtJIfpycsq7wdNIy+QcGNER+jvkHrpEym8kgPB/IGAVib4UxEfmMrsLq+1gDIMZK8jGHWAMLAxoiP+fpb/T+zlFgsG7pY2h/tsD6SQ+kKAZib4XcpGWAQ6yBiNO2ifxcIH6jdydbgYH2ShmOZQ+2Hsz8+KPdYMaV6dZyplj7k4x2sVg0pjNitOb3I0YbbjFkyinegYk9NER+LhC/0buTteEOV4aXXO05cKa3wl9ISVrmEGvgYg8NkR+x9s0/UL/Ru4sxgACqAhmbwYyEhfHc1XMgp7fC3xgTkYd2aorUpAYWQYmcIVbyL+yhIfIT9r75e/obvb8nX2a0j0OhjXMbD56WFEC4u+dAzhTrQMIh1sDFgIbID0iZlr1oTGeLgCfGDUmSfp18aWfPpdyj59E1sT4yJAYQnkjO9ta0aTXhEGvgYkBDpHJSv/nvnHmH27/R++36NikpwKFD1s/9b1gpVeZTsufAO5yd4k3qxxwaIpWT883fUf6BHI4CKaAqkHJ2w0SfKC6u6pWxFszk5bk0DZs9B95RPeep5rvb35OmAx0DGiKV89U3f79LvtRogIYNrZ8TArjpJslPxeRs3wrkpOlAxiEnIpXz1Td/vxlCsZMn40yPjC+Ts+kvTJoOPOyhIVI5X33zV/0QikZjO5iRMAXbGkfTsgHY7Dl4+/6boI0IdWqxPbLOnUOspHzsoSFSOV8ttKba5Es398gYuZKcfbH8KuZ87aczxYi8hD00RH7AFzkDqku+bNnS7T0y1TmbnK27chVTP+Yy/USuUnwPTfPmzXH8+HGL41OmTMHbb7/tgxoRKZMvcgaMgZQn1rdxm+Ji28m+e/YAt9zilpdxJqeIy/QTuY/iA5q9e/dCr9ebfs7Pz0d6ejruvfdeH9aKSJl8sdCaopMvPTS8ZI3UXKHzZZVYe+AUGkeFwyAEd0InchPFBzSNGjUy+3nevHlISkpC7969fVQjIqpJcSvWejGQMXKUUwQAQRpgzteHTT/XjQiR9NyuzBTz920piIwUH9BUd/XqVaxYsQJPPPEENPb+YBFRYPJBIGNkLznbqObEpZIr1yQ9t7Mzxfx6WwqiGlSVFLxmzRqUlJRg3LhxNstUVlaitLTU7B8R+TkPTMF2hq3kbGc7RFyZcu+unb2J1EIjhJd+092gf//+CA0Nxbp162yWmT17NrKysiyO63Q6REdHe7J6RB5jb9ggoIcUWrYECgqsn5P4p80T16/6c54vqzQbZpLKWANnZqnpDQI9s7fYzM8xTqnfOfOOwHmvkOqUlpZCq9VK/vxWzZDT8ePHkZOTgy+++MJuuVmzZuGJJ54w/VxaWor4+HhPV4/IY+wNGwAIzCEFN81c8tSQTPWcorUHTkl6TN2IELMhKFdminliZ28ipVNNQLNkyRI0btwYgwYNslsuLCwMYWFhXqoVkWfZ2836kf+tPFuT6ne6dsRNeTLe2ilcav7L2/d3RlCQxi09RX6zLQWRDKoIaAwGA5YsWYKxY8eiVi1VVJnIZVJ2s7bGb9cvcWPCrzfXf5G6ovKtblyaX/XbUhA5QRVJwTk5Ofjjjz8wYcIEX1eFyCFrOy07w9GwgT2q2+naHg8k/Hpzp3BfrKjMnb0pEKmiu6Nfv35QUe4yBTB35mS4YzhA1UMKHpyC7e0hGW+vqOyr/b2IfEkVAQ2RGrg7J8MdwwGqHFJISQEOHbJ+zk1fbHwxJOPtFZVVsS0FkRsxoCFyA0/kZEhZedYWxe50bY+9mUs//gh06eK2l/LVTuHeXlFZ0dtSELmZKnJoiJTOEzkZUnIv7J1T1ZCCRmM7mBHCrcEMID2vBYBb8qF8qfrO3qluTDwmUhr20ASogF6MzQM8kZOhNwhoI0IxvkdzrDlwGhfKr5rOxdhZh0ZVQwo+3KrA0ZAMAIvF6QJijR8ilWJAE4C4v4t0UgM/d+dkWLtH9SNDcFenpkhLjjGrhyqHFHwYyFRna0jmm0NnvLJGDRG5DwOaAOOtxcT8gZzAz505Gbbu0cXya/hw1zHcUiNgUdxO1/YoJJCprub18+YaNUTkPsyhCSBSFmrLWndIlXkC7iZ3Yz93rTVy9boBz64+6H/3KCVFEZtHSuHNNWqIyH0Y0AQQ/qGWxtnAz9ZOyzHacEk9Xxvzi3Dr3G9xofyazTKqu0fFxVWBjLVp2D/+qKhAxojbBhCpE4ecAgj/UEvjysZ+zk6TtTXMZIuUe+TzxG8FDi9JwW0DiNSJAU0A4R/qv9j7sHc18JOb02KvR8gWR/fIp4nfKg1kjHy1Rg0RuYYBTQDhH+oqjj7svR34ydmzSco98lnitxcDGU/2PnHbACJ1kp1DM3bsWHz33XeeqAt5mC82yVMaKcm+3t7YT+4Qn7175JPEbw9sHmnPxvwi9MzeglHv/YDHPjmAUe/9gJ7ZWywStV3haj4UEXmf7IBGp9MhLS0NrVq1wssvv4xTp055ol7kIYH8h1rqhz0ArwZ+Unt66keGOLxHXk389sHMJbmzz1yR0S4WO2fegZUP34rXR3bCyodvxc6Zd/j17wiRmskeclqzZg3+/PNPLF++HMuWLUNmZibS0tLw0EMPYejQoQgJCfFEPcmNAnV/Fzkf9t7c2E/Knk0NIkORO6svQmvZ/w7ilcRvL+65VJ0v1odR1Ro/RAHOqRyaRo0a4YknnsATTzyBvLw8LFmyBA888ADq1KmDMWPGYMqUKWjVqpW760puFIh/qOV+2Hsr8JOSs/HSXe0cBjOAFxK/fZjw68rsMyLyfy6tQ1NUVIRvvvkG33zzDYKDgzFw4EAcPHgQycnJWLBggbvqSOQWznzYe2tjP3cNBXos/8fLeTLWcNkBIrJHdg/NtWvX8OWXX2LJkiXYvHkzOnTogOnTp+P+++9HdHQ0AGD16tWYMGECHn/8cbdXmMhZSp/l5Y4eIbfP0FHQFGwuO0BE9sgOaGJjY2EwGDBq1Cjs2bMHnTp1sijTp08f1K1b1w3VI3IfNUzHdcdQoFvyfxQUyBgpPSAlIt/SCCHvr9Py5ctx7733IjxcHd+CSktLodVqodPpTD1IFNgCZbdxp9ZqSUmxvk0BoIhF8YyznADrAam/z9QjCiRyP79lBzRqw4CGrPH5tgBKc+EC0MBGz5AHZy45I1ACUqJAx4CmBgY0RA4ocHjJEQakRP5P7uc3tz4gClQqDGSMAnHZASKyjwENkY95vbdBxYEMEZEtDGiIfMir+SAMZIjIj7m0sB4ROc9r+xINHOjzRfGIiDyNAQ2RD3hlV2ydriqQ2bDB8tzPPzOQISK/wiEnUjx/nNHi8X2JOLxERAGGAQ0pmr+uOSJ1v6GcQ2fkBTQMZIgoQHHIiRTLazkmPiB1v6EPdh2T1k4FbB5JRORLDGhIkbySY+JDjnbFrs5uOxnIEBEBYEBDEugNArkFxVh74BRyC4q9EkTIyTFRI+NGmVKupNV23n03AxkiomqYQ0N2+SqHRWqOidRySpTRLhYTejTHh7uOOSxramdJCVCvnvVCv/wCJCe7rX5ERGrCHhqyyZc5LFJzTKSWU6r05BhJ5RpHhVf1yFgLZkJDq3pkGMwQUQBjQENW+TqHxVGOiQZVPUVdE+t75PW9RUo7j2UPRmrLhtYLCAFUVnqqekREqqH4gObUqVMYM2YMGjRogIiICLRv3x4//vijr6vl93ydw2LMMQFg8WFv/DlzSLLq16Ox185j2YNRmD3Y+gOZJ0NEZEbROTQXL15Ejx490KdPH2zYsAGNGjXCkSNHUM9WDgG5jTtyWFxdEC+jXSwWjelskcMT48V1aLyxqF/Ndh6zFcQADGKIiGxQdECTnZ2N+Ph4LFmyxHQsMTHRhzUKHK7msLgrmTijXSzSk2N8slKwu9ogJSjKaBeLfm9lIWjxYutPosJAxh9XeCYi5dIIody/lMnJyejfvz9OnjyJ7du3o2nTppgyZQoefvhhm4+prKxEZbWcgtLSUsTHx0On0yE6Otob1fYLeoNAz+wtOKOrsJpHo0FVT8nOmXdYfEgZk4lrPs5YatGYzopf5dddbZAUFJWWAlqt9Sf49VegdWv5DfAxf13hmYi8p7S0FFqtVvLnt6JzaP773/9i0aJFaNWqFTZt2oTJkydj2rRpWLZsmc3HzJ07F1qt1vQvPj7eizX2H87msPg6mdgd3NUGSbPENBrrwUyzZlW9MioNZvx1hWciUi5F99CEhobi5ptvxvfff286Nm3aNOzduxe5ublWH8MeGveS+007t6AYo977weHzrnz4Vuc2XfQCd7TB2MNlK7HaV3kynh4GctRuez17RETVye2hUXQOTWxsLJJrrK3Rtm1brFq1yuZjwsLCEBYW5umqBQy5OSz+sCCeO9pga5aYLxN+vTEM5PFdxImIbFB0QNOjRw/89ttvZsd+//13JCQk+KhGgSk4SCP5w8cfFsRzRxtqBju+nrlkKyfIOAzkrrwmfwhoiUidFJ1D8/jjj+OHH37Ayy+/jKNHj+Ljjz/Gu+++i6lTp/q6amSDPyyI5442GIOd+V8vtBnMNJ/5FXKPnnexto55M6/JHwJaIlInRQc0t9xyC1avXo2VK1eiXbt2mDNnDhYuXIjRo0f7umpkgz8siOeONnRtUAvHsgfj3vwci3O3P7wYiTO/8lpg581FEv0hoCUidVJ0QAMAgwcPxsGDB1FRUYHDhw/bnbJNymBcKC5Ga/4tPEYbroop24CLbdBoEFyvrsXhojoN0HzmVzhevykA7wV23hwG8oeAlojUSdE5NOR+1ma5AHD7zBdfLojnDGvXRXYbNLbb1nzmV6b/9+ZKx4D3h4GUsMIzEQUeBjQBxNosl7q1QwAAJZevmY65a+aLnGRiX3I0+8dhG+wEMhACeoPASh8GdsZhIEeLJLpzGEhtAS0RqZ+i16FxB7nz2P2VrVku1qhpRV9XubQisINARkmM7QRg1tZAutdEpC5+tVIwuYe9WS7WSJn5ojcI5BYUY+2BU8gtKFb0yr+2OD3755lnbAczCt0F215O0PS0G1F53aDa+0hEBHDIKSA4muVijb0F0Pxlnx7Zi8BdugRERVkvfPQokJTkmYq6Sc1hoGPny7Fyzx9YkPO7qUzdiBCM79Ecj97RisNDRKQq7KEJAK7MXqn5WH/ap0fW7B+Nxmowk98kCakv52Djldrurp5HGPOawmoFYWHOEZwprTQ7X3LlGhbkHEGXF79R1b0kImJAEwBcmb1S/bG+2HjSk0NbUq7LsezBGHpTM6vnms/8CoPHva66YE7KEGTJ5WuqahMREYecAoCjWS7WWJv54u19ejw9tGXvutjbqqD6FGygqt0aVAVz6ckxih+qkToEKaCeNtFfPL0BKZFSMaAJAMbFziavyIMGcBjU2FoAzZsLtHlj7yFr10VOIFOdmjZdlHN/1NImquIv+W1EzuCQU4CwNculbu0Q01o0RrZWw/XWAm3eHNoyXpfH8r+2HcwIgbX7T0p6PjVsuij3/qihTeRf+W1EzmAPTQCxtdgZIG2lYG8t0ObVoa3Ll5HRPg4Z1s798QcQHw/AvzZdNN5HqTPf1NCmQOfoS4CahkSJnMUemgBjnOUytFNTpCY1QHCQxuoxW4/1xj49Xhva0miAyEjL4/fcU7WWzP+CGcC/Nl2sfh/tUVObAp03NyAlUioGNCSLNzae9HhviEZjf2G8zz+3OOxvmy5mtIvFO2M6Www3GqmxTYFManC/6+ifql4Mk8gebn1ATvHkTAq9QaBn9haHQ1s7Z94h7zXdsFWBvyVd6g0Cb205iiW7ClFyxf37eZF35BYUY9R7P8h6DO8xKZ3cz28GNKRIbt17yM17LvnjtFh/bFMgcfQlwBru40VKx4CmBgY06uVyb8jChcDjj1s/599vewpAtr4E2ON0byeRFzCgqYEBjbo51XNw+bL1ZF8AOHkSaNrU/RUlUgBrXwKkWPnwrVxriBRH7uc3p22TohlnYElma3jpwQeBZcvcUykihaq5NMORs5fw1tajDh/HtYbIHzCgIf/g5jwZIrWq/iUgt6BYUkDDtYbIH3DaNqmboynYDGYogPnT+klEjjCg8TOe3J1aURjIEDnkb+snEdnDISc/4m9rpFilgplLnAJNSmJcDLPm34YYf/vbQAGPs5z8hK3dqf1mrQmVzFwKiKCSVImBNqkNp23XEAgBjXFRLVtTNVW/1oSPZi7J/QDw+6CSiMiLOG07AHl1d2pv8uHMJbk9LdztmIjIt5gU7Ae8tju1t/g44dfY01IzSDyjq8DkFXnYmF9k8RjudkxE5FsMaPyAx3en9hYFzFxy1NMCVPW01Jw95ndBJRGRyjCg8QOqX2tiyRKfBzJGzva0+E1QSUSkUgxo/IBq15q4cqUqkJkwwfJcUZFPpmE729Oi+qCSiEjlGND4CeNaEzFa8x6AGG24MmfXaDRA7dqWx596qiqQiYnxfp3gfE+LaoNKIiI/wVlOfqTmxnSKXGtC4XsuGXtazugqrObRGKfAW+tp4QJmRES+w3VoyDsUHshUZ5zlBMAsqJG6ngwXMCMich0X1quBAY2PqSiQqY4r/hIR+RYX1iNlWLLEerIvoOhAxkgVw3dERGSi6KTg2bNnQ6PRmP1r06aNr6tF9lRUKG7mkrOCgzRITWqAoZ2aIjWpAYMZIiIFU3wPTUpKCnJyckw/16ql+CoHLlvDS089BcyfL+upmIdCRERyKD46qFWrFmJ8NIWXJHJzngzzV4iISC5FDzkBwJEjRxAXF4cWLVpg9OjR+OOPP+yWr6ysRGlpqdk/8hAPbFVgax+lIl0FHlmRh9dzfrfYdoCIiEjRAU23bt2wdOlSbNy4EYsWLUJhYSF69eqFsrIym4+ZO3cutFqt6V98fLwXaxwg2rb1yFYF9vZRMlqQcwQ95m2xukEkEREFLlVN2y4pKUFCQgJee+01PPTQQ1bLVFZWorKy0vRzaWkp4uPjOW3bHbZsAfr2tX7ODW+j3IJijHrvB0llNXC8HgwREamXX0/brlu3Lm688UYcPXrUZpmwsDCEhYV5sVYB4OpVwNY1LS4G6rtnfyK5O1FnrTuE9OQYJgsTEZGyh5xqunTpEgoKChAby2/lXqPRWA9m3n67qlfGTcEMIG8nalu7XhMRUWBSdA/NU089hSFDhiAhIQGnT59GZmYmgoODMWrUKJ/WKyCmFNvKkdFqgZISj7yko32UrJHbq0NERP5J0QHNyZMnMWrUKBQXF6NRo0bo2bMnfvjhBzRq1MhndfL7KcU+3KrAuGO1cR8lKeT06hARkf9SVVKwM9y5l5NxSnHNCyZ100JFe+ABYMUK6+e8/BbZmF+E2V/+gjOllTbLGHe93jnzDv/rHSMiItmf36rKofEle1OKjcey1h1S3xop+/ZV9cpYC2ZcmILtiox2sdj1TF88nnaj1fPG8CVzSDKDGSIiAsCARrI9hRcsFnurTnVJqtevVwUyN99seU6n8/meS8FBGjyW1grvjOmMWK35sFKMNlzdvWFEROR2is6hURKpyaeqSFK1lSezYQOQkeHdujjAXa+JiEgKBjQSSU0+VXSSqq1A5qGHgPff925dZDDuek1ERGQLAxqJHE0pNiapdk1037osbtOlC5BnY+aQf+eEExFRgGAOjUTGKcXAX0mpRopNUl28uKpXxlow48GEX71BILegGGsPnEJuQbH6EqWJiEh12EMjQ0a7WCwa09liHZoYpa1DU1AAtGxp/ZyHe2T8fp0eIiJSJK5D4wTFrhR8/ToQEmL93OXLQESER1/er9fpISIir+I6NF4QHKRB18T6aBwVjnNlVVO1fT6sotFYD2b27avqlfFwMOO36/QQEZEqcMjJCYoaVrE1c2n2bCAz02vVkLNOj69mLCm2Z42IiFzGgEYmW8MqZ3QVmLwiz3vDKuPHA0uXWh734OaR9ih9nR5FBaFEROR2HHKSQRHDKmvWVPXKWAtmhJAVzLhzNpKS1+kxBqE1e5CMQejG/CKv14mIiNyLPTQy+HRY5dQpoFkzGy8sPxBxd4+FUtfpcRSEalAVhKYnx3D4iYhIxdhDI4NPhlX0+qoeGWvBTEWF08GMu3sslLpOj9/twUVERFYxoJHB68MqGg1Qy0on2q+/VgUyYWGyn9KTw2bGdXpiFLSZpNJze4iIyD045CSD14ZVbM1cev/9qn2XXODpYTOlbSap5NweIiJyH/bQyODxYZXx460HM+npVT0yLgYzgHd6LIybSQ7t1BSpSQ18mptiDEJt1UCDqtwhRe7BRUREkjGgkckjwyqOZi5t3uxUXa0JtB4Lpeb2EBGRe3HIyQluG1Zx88wlKZQ6G8mTVLMHFxEROY17OfmCXm892ReomrnkRLKvHMZZTgDMghp/33OJKwUTEakH93JSOg/MXJJLibORvEFJuT1EROReHHLyFg/OXHKG0mYjERERuYIBjafZ2nMpPd2tyb7OMPZYEBERqR0DGk9Zswa46y7r5/w7bYmIiMjrGNC4mw9mLhEREQU6BjTuYjAAwcHWz3lh5hIREVEg4ywnd9BorAczXpy5REREFMgY0Lhi+HDrs5fef78qkGnd2vt18lN6g0BuQTHWHjiF3IJipzbPJCIi/8UhJ2d98gmwapX5sbFjrc9oIpdszC+yWOU3lqv8EhFRNeyhcdalS+Y/C8FgxgOMqxrX3CH8jK4Ck1fkYWN+kY9qRkRESsKAxlkTJ1YFNUKYZi9xWMS99AaBrHWHrO45ZTyWte4QrzMREXHIySWRkab/5bCI++0pvGDRM1OdAFCkq8CewgtcIJCIKMCxh8YNOCziGefKbAczzpQjIiL/paqAZt68edBoNJg+fbqvq2LCYRHPaRwV7riQjHJEROS/VBPQ7N27F4sXL0aHDh18XRUzcoZF3CkQ8nW6JtZHrDYctrbL1KBqWK9rYn1vVouIiBRIFTk0ly5dwujRo/Hee+/hxRdf9HV1zPhiWCRQ8nWCgzTIHJKMySvyoAHMesGMQU7mkGTuEE5EROrooZk6dSoGDRqEtLQ0h2UrKytRWlpq9s+TvD0sEmj5OhntYrFoTGfEaM2vX4w2HIvGdParAI6IiJyn+B6aTz75BHl5edi7d6+k8nPnzkVWVpaHa/UX47DIGV2F1TwaDao+fN0xLOIoX0eDqnyd9OQYv+q1yGgXi/TkGOwpvIBzZRVoHFV1Pf2pjURE5BpF99CcOHECjz32GD766COEh0vr4Zg1axZ0Op3p34kTJzxaR+OwCACLXA93D4v4Kl9HCYKDNEhNaoChnZoiNamBpOsZCHlGRERURdE9NPv27cO5c+fQuXNn0zG9Xo/vvvsOb731FiorKxFcY1PIsLAwhHl5M0jjsEjNvJYYN+e1cBqzdIGSZ0RERFUUHdD07dsXBw8eNDs2fvx4tGnTBjNnzrQIZnzJG8MinMYsjTHPqGZ/jDHPiLk3RET+R9EBTVRUFNq1a2d2LDIyEg0aNLA4rgTGYRFP8Wa+jloFap4REVGgU3QODZnzZr6OWgVynhERUSBTdA+NNdu2bfN1FXzKW/k6asU8IyKiwKS6gIY4jdke5hkREQUmBjQq5el8HbVinhERUWBiDg35FeYZEREFJgY05He4XQIRUeDhkBP5JeYZEREFFgY05LeYZ0REFDg45ERERESqx4CGiIiIVI8BDREREakeAxoiIiJSPQY0REREpHoMaIiIiEj1GNAQERGR6jGgISIiItVjQENERESqx4CGiIiIVI8BDREREake93Iit9MbBDeFJCIir2JAQ261Mb8IWesOoUhXYToWqw1H5pBkZLSL9WHNiIjIn3HIidxmY34RJq/IMwtmAOCMrgKTV+RhY36Rj2pGRET+jgGNk/QGgdyCYqw9cAq5BcXQG4Svq+RTeoNA1rpDsHYVjMey1h0K+OtERESewSEnJ3BYxdKewgsWPTPVCQBFugrsKbyA1KQG3qsYEREFBPbQyMRhFevOldkOZpwpR0REJAcDGhk4rGJb46hwt5YjIiKSgwGNDHKGVQJN18T6iNWGw9bkbA2qhuW6Jtb3ZrWIiChAMKCRgcMqtgUHaZA5JBkALIIa48+ZQ5K5Hg0REXkEAxoZOKxiX0a7WCwa0xkxWvP2x2jDsWhM54BNmCYiIs/jLCcZjMMqZ3QVVvNoNKj68A7kYZWMdrFIT47hSsFERORVDGhkMA6rTF6RBw1gFtRwWOUvwUEaTs0mIiKv4pCTTBxWISIiUh720DiBwypERETKwoDGSRxWISIiUg4OOREREZHqMaAhIiIi1VN0QLNo0SJ06NAB0dHRiI6ORmpqKjZs2ODrahEREZHCKDqgadasGebNm4d9+/bhxx9/xB133IGhQ4fil19+8XXViIiISEE0QghV7aRYv359zJ8/Hw899JCk8qWlpdBqtdDpdIiOjvZw7YiIiMgd5H5+q2aWk16vx2effYby8nKkpqbaLFdZWYnKykrTz6Wlpd6oHhEREfmQooecAODgwYOoU6cOwsLC8Mgjj2D16tVITk62WX7u3LnQarWmf/Hx8V6sLREREfmC4oecrl69ij/++AM6nQ6ff/453n//fWzfvt1mUGOthyY+Pp5DTkRERCoid8hJ8QFNTWlpaUhKSsLixYsllWcODRERkfrI/fxW/JBTTQaDwawHhoiIiEjRScGzZs3CgAEDcMMNN6CsrAwff/wxtm3bhk2bNvm6akRERKQgig5ozp07hwcffBBFRUXQarXo0KEDNm3ahPT0dF9XLSDpDYIbchIRkSIpOqD54IMPfF0F+p+N+UXIWncIRboK07FYbTgyhyQjo12sD2tGRESkwhwa8r6N+UWYvCLPLJgBgDO6CkxekYeN+UU+qhkREVEVBjRkl94gkLXuEKxNhTMey1p3CHqDqibLERGRn2FAQ3btKbxg0TNTnQBQpKvAnsIL3qsUERFRDQxoyK5zZbaDGWfKEREReQIDGrKrcVS4W8sRERF5AgMasqtrYn3EasNha3K2BlWznbom1vdmtYiIiMwwoCG7goM0yBxStW9WzaDG+HPmkGSuR0NERD7FgIYcymgXi0VjOiNGaz6sFKMNx6IxnbkODRER+ZyiF9Yj5choF4v05BiuFExERIrEgIYkCw7SIDWpga+rQUREZIFDTkRERKR6DGiIiIhI9RjQEBERkeoxoCEiIiLVY0BDREREqseAhoiIiFSPAQ0RERGpHgMaIiIiUj0GNERERKR6fr9SsBACAFBaWurjmhAREZFUxs9t4+e4I34f0JSVlQEA4uPjfVwTIiIikqusrAxardZhOY2QGvqolMFgwOnTpxEVFQWNxj0bKZaWliI+Ph4nTpxAdHS0W55TaQKhjQDb6U8CoY0A2+lPAqGNgPPtFEKgrKwMcXFxCApynCHj9z00QUFBaNasmUeeOzo62q/fhEBgtBFgO/1JILQRYDv9SSC0EXCunVJ6ZoyYFExERESqx4CGiIiIVI8BjRPCwsKQmZmJsLAwX1fFYwKhjQDb6U8CoY0A2+lPAqGNgPfa6fdJwUREROT/2ENDREREqseAhoiIiFSPAQ0RERGpHgMaIiIiUj0GNADefvttNG/eHOHh4ejWrRv27Nljt/xnn32GNm3aIDw8HO3bt8f69evNzgsh8PzzzyM2NhYRERFIS0vDkSNHPNkESeS087333kOvXr1Qr1491KtXD2lpaRblx40bB41GY/YvIyPD081wSE47ly5datGG8PBwszJKvJ9y2nj77bdbtFGj0WDQoEGmMkq8l9999x2GDBmCuLg4aDQarFmzxuFjtm3bhs6dOyMsLAwtW7bE0qVLLcrI/X33JLlt/OKLL5Ceno5GjRohOjoaqamp2LRpk1mZ2bNnW9zLNm3aeLAVjslt57Zt26y+Z8+cOWNWTkn3EpDfTmu/dxqNBikpKaYySrufc+fOxS233IKoqCg0btwYw4YNw2+//ebwcd743Az4gOY///kPnnjiCWRmZiIvLw8dO3ZE//79ce7cOavlv//+e4waNQoPPfQQ9u/fj2HDhmHYsGHIz883lXnllVfwxhtv4J133sHu3bsRGRmJ/v37o6KiwlvNsiC3ndu2bcOoUaOwdetW5ObmIj4+Hv369cOpU6fMymVkZKCoqMj0b+XKld5ojk1y2wlUrV5ZvQ3Hjx83O6+0+ym3jV988YVZ+/Lz8xEcHIx7773XrJzS7mV5eTk6duyIt99+W1L5wsJCDBo0CH369MGBAwcwffp0TJw40ewD35n3hyfJbeN3332H9PR0rF+/Hvv27UOfPn0wZMgQ7N+/36xcSkqK2b3cuXOnJ6ovmdx2Gv32229m7WjcuLHpnNLuJSC/na+//rpZ+06cOIH69etb/G4q6X5u374dU6dOxQ8//IBvvvkG165dQ79+/VBeXm7zMV773BQBrmvXrmLq1Kmmn/V6vYiLixNz5861Wn7EiBFi0KBBZse6desmJk2aJIQQwmAwiJiYGDF//nzT+ZKSEhEWFiZWrlzpgRZII7edNV2/fl1ERUWJZcuWmY6NHTtWDB061N1VdYncdi5ZskRotVqbz6fE++nqvVywYIGIiooSly5dMh1T4r2sDoBYvXq13TJPP/20SElJMTt23333if79+5t+dvXaeZKUNlqTnJwssrKyTD9nZmaKjh07uq9ibialnVu3bhUAxMWLF22WUfK9FMK5+7l69Wqh0WjEsWPHTMeUfj/PnTsnAIjt27fbLOOtz82A7qG5evUq9u3bh7S0NNOxoKAgpKWlITc31+pjcnNzzcoDQP/+/U3lCwsLcebMGbMyWq0W3bp1s/mcnuZMO2u6fPkyrl27hvr165sd37ZtGxo3bozWrVtj8uTJKC4udmvd5XC2nZcuXUJCQgLi4+MxdOhQ/PLLL6ZzSruf7riXH3zwAUaOHInIyEiz40q6l85w9LvpjmunNAaDAWVlZRa/l0eOHEFcXBxatGiB0aNH448//vBRDV3TqVMnxMbGIj09Hbt27TId98d7CVT9bqalpSEhIcHsuJLvp06nAwCL92B13vrcDOiA5vz589Dr9WjSpInZ8SZNmliM1RqdOXPGbnnjf+U8p6c5086aZs6cibi4OLM3XEZGBv7973/j22+/RXZ2NrZv344BAwZAr9e7tf5SOdPO1q1b48MPP8TatWuxYsUKGAwGdO/eHSdPngSgvPvp6r3cs2cP8vPzMXHiRLPjSruXzrD1u1laWoorV6645fdAaV599VVcunQJI0aMMB3r1q0bli5dio0bN2LRokUoLCxEr169UFZW5sOayhMbG4t33nkHq1atwqpVqxAfH4/bb78deXl5ANzzN01pTp8+jQ0bNlj8bir5fhoMBkyfPh09evRAu3btbJbz1uem3++2Ta6bN28ePvnkE2zbts0sYXbkyJGm/2/fvj06dOiApKQkbNu2DX379vVFVWVLTU1Famqq6efu3bujbdu2WLx4MebMmePDmnnGBx98gPbt26Nr165mx/3hXgaajz/+GFlZWVi7dq1ZbsmAAQNM/9+hQwd069YNCQkJ+PTTT/HQQw/5oqqytW7dGq1btzb93L17dxQUFGDBggVYvny5D2vmOcuWLUPdunUxbNgws+NKvp9Tp05Ffn6+z3O0jAK6h6Zhw4YIDg7G2bNnzY6fPXsWMTExVh8TExNjt7zxv3Ke09OcaafRq6++innz5mHz5s3o0KGD3bItWrRAw4YNcfToUZfr7AxX2mkUEhKCm266ydQGpd1PV9pYXl6OTz75RNIfQV/fS2fY+t2Mjo5GRESEW94fSvHJJ59g4sSJ+PTTTy268muqW7cubrzxRlXdS2u6du1qaoM/3UugaobPhx9+iAceeAChoaF2yyrlfj766KP46quvsHXrVjRr1sxuWW99bgZ0QBMaGoouXbrg22+/NR0zGAz49ttvzb61V5eammpWHgC++eYbU/nExETExMSYlSktLcXu3bttPqenOdNOoCrrfM6cOdi4cSNuvvlmh69z8uRJFBcXIzY21i31lsvZdlan1+tx8OBBUxuUdj9daeNnn32GyspKjBkzxuHr+PpeOsPR76Y73h9KsHLlSowfPx4rV640m3pvy6VLl1BQUKCqe2nNgQMHTG3wl3tptH37dhw9elTSlw1f308hBB599FGsXr0aW7ZsQWJiosPHeO1zU1Y6sx/65JNPRFhYmFi6dKk4dOiQ+Nvf/ibq1q0rzpw5I4QQ4oEHHhDPPPOMqfyuXbtErVq1xKuvvioOHz4sMjMzRUhIiDh48KCpzLx580TdunXF2rVrxc8//yyGDh0qEhMTxZUrV7zePiO57Zw3b54IDQ0Vn3/+uSgqKjL9KysrE0IIUVZWJp566imRm5srCgsLRU5OjujcubNo1aqVqKio8EkbhZDfzqysLLFp0yZRUFAg9u3bJ0aOHCnCw8PFL7/8YiqjtPspt41GPXv2FPfdd5/FcaXey7KyMrF//36xf/9+AUC89tprYv/+/eL48eNCCCGeeeYZ8cADD5jK//e//xW1a9cWM2bMEIcPHxZvv/22CA4OFhs3bjSVcXTtvE1uGz/66CNRq1Yt8fbbb5v9XpaUlJjKPPnkk2Lbtm2isLBQ7Nq1S6SlpYmGDRuKc+fOeb19RnLbuWDBArFmzRpx5MgRcfDgQfHYY4+JoKAgkZOTYyqjtHsphPx2Go0ZM0Z069bN6nMq7X5OnjxZaLVasW3bNrP34OXLl01lfPW5GfABjRBCvPnmm+KGG24QoaGhomvXruKHH34wnevdu7cYO3asWflPP/1U3HjjjSI0NFSkpKSIr7/+2uy8wWAQzz33nGjSpIkICwsTffv2Fb/99ps3mmKXnHYmJCQIABb/MjMzhRBCXL58WfTr1080atRIhISEiISEBPHwww/79I+JkZx2Tp8+3VS2SZMmYuDAgSIvL8/s+ZR4P+W+Z3/99VcBQGzevNniuZR6L41Td2v+M7Zt7Nixonfv3haP6dSpkwgNDRUtWrQQS5YssXhee9fO2+S2sXfv3nbLC1E1VT02NlaEhoaKpk2bivvuu08cPXrUuw2rQW47s7OzRVJSkggPDxf169cXt99+u9iyZYvF8yrpXgrh3Hu2pKREREREiHfffdfqcyrtflprHwCz3zVffW5q/ldBIiIiItUK6BwaIiIi8g8MaIiIiEj1GNAQERGR6jGgISIiItVjQENERESqx4CGiIiIVI8BDREREakeAxoiIiJSPQY0RKQqer0e3bt3x9133212XKfTIT4+Hn//+999VDMi8iWuFExEqvP777+jU6dOeO+99zB69GgAwIMPPoiffvoJe/fudbhjMRH5HwY0RKRKb7zxBmbPno1ffvkFe/bswb333ou9e/eiY8eOvq4aEfkAAxoiUiUhBO644w4EBwfj4MGD+L//+z/84x//8HW1iMhHGNAQkWr9+uuvaNu2Ldq3b4+8vDzUqlXL11UiIh9hUjARqdaHH36I2rVro7CwECdPnvR1dYjIh9hDQ0Sq9P3336N3797YvHkzXnzxRQBATk4ONBqNj2tGRL7AHhoiUp3Lly9j3LhxmDx5Mvr06YMPPvgAe/bswTvvvOPrqhGRj7CHhohU57HHHsP69evx008/oXbt2gCAxYsX46mnnsLBgwfRvHlz31aQiLyOAQ0Rqcr27dvRt29fbNu2DT179jQ7179/f1y/fp1DT0QBiAENERERqR5zaIiIiEj1GNAQERGR6jGgISIiItVjQENERESqx4CGiIiIVI8BDREREakeAxoiIiJSPQY0REREpHoMaIiIiEj1GNAQERGR6jGgISIiItVjQENERESq9/8qWWTS3O6DNAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 打印最终参数\n",
    "print(\"最终参数:\")\n",
    "for name, param in model.named_parameters():\n",
    "    if param.requires_grad:\n",
    "        print(f\"{name}: {param.data}\")\n",
    "\n",
    "# 绘制损失下降曲线\n",
    "plt.figure(figsize=(10, 5))\n",
    "plt.plot(range(num_epochs), cost_history)\n",
    "plt.xlabel('Epochs')\n",
    "plt.ylabel('Loss')\n",
    "plt.title('Loss Function History')\n",
    "plt.show()\n",
    "\n",
    "# 绘制数据和回归线\n",
    "plt.scatter(X.numpy(), y.numpy())\n",
    "plt.plot(X.numpy(), model(X).detach().numpy(), 'r-')\n",
    "plt.xlabel('X')\n",
    "plt.ylabel('y')\n",
    "plt.title('Linear Regression with Gradient Descent (PyTorch)')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e39ffddf-2cf8-4793-8ee3-da070959b61f",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "524e5fd3-27d0-46e9-a9f9-2833b572de09",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
